<?php
class UsersController extends AppController {

	var $name = 'Users';
	var $components = array('Email'); //  use component email 
	var $uses = array('User','Client','Person','ClientsUsers','Update','Rol','Sponsor','ClientsSponsors','ClientsAcceso','Agenda','Sucursal');

    function beforeFilter () {
        parent::beforeFilter();
		$this->Auth->allow('loginmobile','logoutmobile','recovery','isLogged');
//        $this->Auth->loginRedirect = array('controller' => 'dashboards', 'action' => 'index');
		$this->Auth->autoRedirect = false;


//		$this->Security->requireSecure();

		// Aplico el Layout segun la Vista o si es AJAX
		if ($this->RequestHandler->isAjax()) {
			$this->layout = 'ajax';
		}else{
			// Cambio la Vista por la del Rol
			$this->layout = strtolower($this->Session->read('VistaActual'));
		}
    }

	function index() {
		$this->User->recursive = 0;
		$this->set('users', $this->paginate());
	}

	function view($id = null) {
		if (!$id) {
			$this->Session->setFlash(__('Invalid user', true));
			$this->redirect(array('action' => 'index'));
		}
		$this->set('user', $this->User->read(null, $id));
	}

	function add() {
		if (!empty($this->data)) {
			$this->User->create();
			if ($this->User->save($this->data)) {
				$this->Session->setFlash(__('The user has been saved', true));
				$this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(__('The user could not be saved. Please, try again.', true));
			}
		}
		$groups = $this->User->Group->find('list');
		$this->set(compact('groups'));
	}

	function edit($id = null) {
		if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('Invalid user', true));
			$this->redirect(array('action' => 'index'));
		}
		if (!empty($this->data)) {
			if ($this->User->save($this->data)) {
				$this->Session->setFlash(__('The user has been saved', true));
				$this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(__('The user could not be saved. Please, try again.', true));
			}
		}
		if (empty($this->data)) {
			$this->data = $this->User->read(null, $id);
		}
		$clients = $this->User->Client->find('list');
		$rols = $this->User->Rol->find('list');
		$this->set(compact('clients', 'rols'));
	}

	function seleccionarCliente() {
		$this->User->recursive = -1;
        $this->layout = 'ventana_flotante';

		if(!$this->Session->read()){
			$this->redirect(array('action'=>'login'));
		}else{

			// Averiguo TODOS los Clientes a los que pertenece

			$id_cliente_logueado = $this->User->query(
				"SELECT 
					Client.id, Client.name
				FROM 
					clients AS Client 
					INNER JOIN clients_users AS ClientsUsers ON Client.id = ClientsUsers.client_id
				WHERE
					ClientsUsers.user_id = '".$this->Session->read('Auth.User.id')."'
				ORDER BY 
					Client.name
				;"
			);

			$this->set('arreglo_clientes', $id_cliente_logueado);
		}
	}

	function cambiarcliente($id = null) {
		$this->Client->recursive = -1;

		if (!$id) {
			$this->redirect(array('action'=>'login'));
		}else{

			// Obtengo TODOS los datos del Cliente y lo guardo en la Session
			$id_cliente_logueado  = $this->Client->find('first',
				array(
					'conditions' => array('Client.id' => $id )
				)
			);

			// Defino el Cliente Actual
			$this->setClienteActual($id_cliente_logueado['Client']);

			// Obtengo el SPONSOR si lo tiene
			$datos_sponsor = $this->Client->query(
				"SELECT 
					Sponsor.name, Sponsor.logo, Sponsor.id
				FROM 
					clients AS Client
					INNER JOIN clients_sponsors AS ClientsSponsors ON ClientsSponsors.client_id = Client.id
					INNER JOIN sponsors AS Sponsor ON ClientsSponsors.sponsor_id = Sponsor.id
				WHERE
					ClientsSponsors.client_id = '".$id."' 
				LIMIT 1
				;"
			);

			if(!empty($datos_sponsor)){
				// Defino el Sponsor Actual
				$this->setSponsorActual($datos_sponsor['0']['Sponsor']);
			}


			// Obtengo el timeZone del cliente
			$Cliente = $this->Client->read(null,$id);
			if (empty($Cliente['Client']['timezone'])){
				$Cliente['Client']['timezone'] = "America/Argentina/Buenos_Aires";
			}
			$this->Session->write('Client', $Cliente['Client']);


			//---------------------------------------------------------------------------
			//                                Armo la matriz de accesos para este cliente
			//---------------------------------------------------------------------------
			$Tabla        = $this->_tabla();

			$client_id = $id;
			$Accesos = $this->ClientsAcceso->find('all', array(
							'conditions' => array( 'ClientsAcceso.client_id' => $client_id	)
							));
			foreach($Accesos as $aa){
				$rol_id        = $aa['ClientsAcceso']['rol_id'];
				$identificador = $aa['ClientsAcceso']['identificador'];
				$accede        = $aa['ClientsAcceso']['accede'];
				$Tabla[$rol_id][$identificador] = $accede;
			}
			$this->Session->write('MatrizAccesos', $Tabla);


			// Guardo el Plan Actual
			$this->loadModel('ClientsPlan');
			$Plan = $this->ClientsPlan->find('first', array(
							'conditions' => array(
											'ClientsPlan.client_id' => $client_id,
											'ClientsPlan.activo'    => 1,
							), 'recursive' => 1

							));
			$this->Session->write('PlanActual', $Plan);		


			// Guardo el Listado de Roles del Usuario y el Rol Actual (primero)
			$roles_usuario = $this->requestAction('/rols/obtenerroles/'.$this->Auth->user('id').'/'.$id);
			$this->Session->write('ListadoRolesUsuarioLogueado', $roles_usuario);
			$this->Session->write('VistaActual', current($roles_usuario));

			$this->ChequeaHabilitaciones(); // Valida si el cliente está habilitado para acceder
			
			// Defino el landing page.
			$this->redirect('/dashboards');
		}
	}

	function setClienteActual($arreglo_cliente){
		// Defino el Cliente Actual
		$this->Session->write('ClientesUsuarioLogueado', $arreglo_cliente);

		// Defino el Profesional Actual (puede ser el mismo usuario si tiene rol Profesional u otro si es Secretaria)
		$this->setProfesionalActual($arreglo_cliente['id'], $this->Auth->user('id'));
	}

	function setSponsorActual($arreglo_sponsor){

		// Defino el Sponsor Actual
		if(!empty($arreglo_sponsor)){
			$this->Session->write('SponsorClienteLogueado', $arreglo_sponsor);
		}
	}

	function setProfesionalActual($id_cliente, $id_profesional = null, $id_agenda = null){

		$id_profesional_cambiar = 0;

		// Obtengo el Listado de todos los Profesionales del Cliente
		$arreglo_Doctores = $this->obtenerListadoDoctores($id_cliente);

		if(!$id_profesional){

			if(!empty($arreglo_Doctores)){
				$id_profesional_cambiar = key($arreglo_Doctores);
			}
		}else{

			// Valido que el prof. seleccionado pertenezca al cliente y sea profesional
			foreach($arreglo_Doctores AS $id_profesional_aux => $registro){

				// Si el Usuario logueado es Profesional del Cliente = OK
				if($id_profesional_aux == $id_profesional){
					$id_profesional_cambiar = $id_profesional;
					break;
				}
			}

			// Si el Usuario logueado no es Profesional, selecciono uno de la lista de Profesionales
			if($id_profesional_cambiar == 0){
				if(!empty($arreglo_Doctores)){
					reset($arreglo_Doctores);
					$id_profesional_cambiar = key($arreglo_Doctores);
				}
			}

		}

		// Defino el Profesional Actual
		$this->Session->write('ProfesionalSeleccionado', $id_profesional_cambiar);

		// Si se definio la Agenda, la guardo
		if($id_agenda){		
			$this->Session->write('AgendaSeleccionada', $id_agenda);
		}else{ // Si no se definió, defino una Agenda del Profesional Seleccionado


			// Averigulo las Agendas del Profesional Seleccionado
			$ag = $this->Agenda->find('list', array(
							'conditions' => array(
											'Agenda.client_id' => $id_cliente, 
											'Agenda.user_id' => $id_profesional_cambiar, 
											'Agenda.staterecord_id' => 1
											),
							'field' => array('Agenda.id')
			) );
			// Selecciono la primera Agenda
			reset($ag);
			$this->Session->write('AgendaSeleccionada', key($ag));
		}
	}

	function isAdmin(){

		// Consulto el Listado de Roles del Usuario
		$roles_usuario = $this->requestAction('/rols/obtenerroles/'.$this->Auth->user('id').'/'.$this->Session->read('ClientesUsuarioLogueado.id'));

		if(isset($roles_usuario[1])){ // Si pertenece al grupo de Administradores
			return true;
		}else{
			return false;
		}
	}


	function mostrarmsgupdate(){

		$data_aux = $this->Session->read('UltimoUpdateUsuario_'.$this->Auth->user('id'));

		if($this->Session->read('Auth.User.update_id') <> $data_aux['Update']['id']){
			return true;
		}else{
			return false;
		}
	}


	function login() {

		$this->ClientsUsers->recursive = 0;
		$this->User->recursive = 0;
		$this->Client->recursive = 0;
		$this->ClientsSponsors->recursive = 0;
		
        $this->layout = 'default_front';

		$this->set('datos', $this->data);

        // If a user has submitted form data:
        if (!empty($this->data)){

            // First, let's see if there are any users in the database
            // with the username supplied by the user using the form:

            $someone = $this->User->findByUsername($this->data['User']['username']);


            if(!empty($someone['User']['password']) && $someone['User']['password'] == $this->data['User']['password']){

				// Guardo la ultima vez que se logueo
				$this->User->id = $this->Auth->user('id');
				$this->User->saveField('last_login', date('Y-m-d H:i:s') );

				// Averiguo a que Cliente pertenece
				$id_cliente_logueado = $this->User->query(
					"SELECT 
						ClientsUsers.client_id
					FROM 
						clients AS Client
						INNER JOIN clients_users AS ClientsUsers ON ClientsUsers.client_id = Client.id
					WHERE
						ClientsUsers.user_id = '".$this->Auth->user('id')."' AND Client.stateclient_id = '1'
					;"
				);

				// Consulta el Ultimo UPDATE
				$this->Session->write('UltimoUpdateUsuario_'.$this->Auth->user('id'), $this->Update->find('first',array('order' => array('Update.id DESC'))) );

				switch(count($id_cliente_logueado)){
					case 1:

						$client_id = $id_cliente_logueado[0]['ClientsUsers']['client_id'];
						$user_id   = $this->Auth->user('id');

						// Obtengo TODOS los datos del Cliente y lo guardo en la Session
						$Cliente = $this->Client->read(null,$client_id);
						
						//-------------------------------------------------------------
						//                        A que sucursal pertenece el usuario??
						//-------------------------------------------------------------
						$sql = "select s.id, s.name
								from sucursals as s
									left join sucursals_users as su on su.sucursal_id = s.id
								where su.user_id = '$user_id' and su.client_id='$client_id'";
						$x = $this->Sucursal->query($sql);
						$Sucursal = $x[0]['s'];
						$this->Session->write('Sucursal', $Sucursal );								


						
						//-------------------------------------------------------------------------------
						//                                                         VADEMECUMS POR CLIENTE
						//-------------------------------------------------------------------------------
							$this->loadModel('ClientsVademecum');
							$xx = $this->ClientsVademecum->find('all',array(
																'conditions'=>array('client_id'=>$client_id)
															));
							$default_vademecum = $Cliente['Client']['default_vademecum'];
			
							$existe_el_default = false;
							$Vademecums = array();
							foreach($xx as $clave=>$valor){
								$vv = array();
								if($valor['ClientsVademecum']['tabla']=="$default_vademecum"){
									$existe_el_default = true;
									$vv['default'] = '1';
								} else {
									$vv['default'] = '0';
								}
								
								$vv['tabla']  = $valor['ClientsVademecum']['tabla'];
								$vv['modelo'] = $valor['ClientsVademecum']['modelo'];	
								$vv['nombre_mostrar'] = $valor['ClientsVademecum']['nombre_mostrar'];	
							
								$Vademecums[] = $vv;
							}
			
							if(!$existe_el_default){
								//--------------------------------------------------------------
								//              Si no tiene el vademecum por default, se lo creo
								//--------------------------------------------------------------
								$this->loadModel('ClientsVademecum');
								$this->ClientsVademecum->create();
								$this->ClientsVademecum->set(array(
											'id'        => 0,
											'client_id' => $client_id,
											'tabla'     => 'vademecums',
											'modelo'    => 'Vademecum'
										));
								$this->ClientsVademecum->save();	
								
								$vv['default'] = '1';
								$vv['tabla']   = 'vademecums';
								$vv['modelo']  = 'Vademecum';
								$vv['nombre_mostrar']  = 'Vademecum';
								$Vademecums[]  = $vv;
								//----------------------------------------------------------END 
							}
							$this->Session->write('VademecumsCliente', $Vademecums);
							//pr($Vademecums); die();
						//----------------------------------------------------- END VADEMECUM POR CLIENTE
						
						
						//----------------------------------------------------------
						//                            Obtengo el SPONSOR si lo tiene
						//----------------------------------------------------------
						$datos_sponsor = $this->Client->query(
							"SELECT 
								Sponsor.name, Sponsor.logo, Sponsor.id
							FROM 
								clients AS Client
								INNER JOIN clients_sponsors AS ClientsSponsors ON ClientsSponsors.client_id = Client.id
								INNER JOIN sponsors AS Sponsor ON ClientsSponsors.sponsor_id = Sponsor.id
							WHERE
								ClientsSponsors.client_id = '$client_id' 
							LIMIT 1"
						);

						if(!empty($datos_sponsor)){
							// Defino el Sponsor Actual
							$this->setSponsorActual($datos_sponsor['0']['Sponsor']);
						}

						
						if (empty($Cliente['Client']['timezone'])){
							$Cliente['Client']['timezone'] = "America/Argentina/Buenos_Aires";
						}
						$this->Session->write('Client', $Cliente['Client']);

						// Guardo el Listado de Roles del Usuario y el Rol Actual (primero)
						$roles_usuario = $this->requestAction('/rols/obtenerroles/'.$this->Auth->user('id').'/'.$id_cliente_logueado[0]['ClientsUsers']['client_id']);
						$this->Session->write('ListadoRolesUsuarioLogueado', $roles_usuario);
						$this->Session->write('VistaActual', current($roles_usuario));

						//---------------------------------------------------------------------------
						//                                Armo la matriz de accesos para este cliente
						//---------------------------------------------------------------------------
						$Tabla        = $this->_tabla();

						$client_id = $id_cliente_logueado[0]['ClientsUsers']['client_id'];
						$Accesos = $this->ClientsAcceso->find('all', array(
										'conditions' => array( 'ClientsAcceso.client_id' => $client_id	)
										));
						foreach($Accesos as $aa){
							$rol_id        = $aa['ClientsAcceso']['rol_id'];
							$identificador = $aa['ClientsAcceso']['identificador'];
							$accede        = $aa['ClientsAcceso']['accede'];
							$Tabla[$rol_id][$identificador] = $accede;
						}
						$this->Session->write('MatrizAccesos', $Tabla);



						// Guardo el Plan Actual
						$this->loadModel('ClientsPlan');
						$Plan = $this->ClientsPlan->find('first', array(
										'conditions' => array(
														'ClientsPlan.client_id' => $client_id,
														'ClientsPlan.activo'    => 1,
										), 'recursive' => 1

										));
						$this->Session->write('PlanActual', $Plan);						


						// Defino el Cliente Actual
						$this->setClienteActual($Cliente['Client']);

						$this->ChequeaHabilitaciones();


						
						break;
					case 0:
						$this->Session->setFlash(__('La cuenta no ha sido activada. Verifique haber recibido un email de Epicrisis para proceder a activarla. Si el problema persiste, <a href="/contacto" class="btn">contáctenos aquí</a>.', true), 'default', array('class' => 'error-message'));
						$this->redirect(array('action'=>'login'));
						break;

					default:
						$this->redirect(array('action'=>'seleccionarcliente'));
						break;
				}


                // Defino el landing page.
                if(!$this->Session->read("Auth.redirect")){
                	$this->redirect('/dashboards');
                }else{
                	$this->redirect($this->Session->read("Auth.redirect"));
                }
                
            }
            // Else, they supplied incorrect data:
            else
            {
				$this->Session->setFlash(__('Los datos ingresados no son correctos... Favor de revisarlos y volver a intentar.', true), 'default', array('class' => 'error-message'));
				$this->redirect(array('action'=>'login'));
            }
        }
	}


	function acepta_tos() {
		$client_id = $this->Session->read('ClientesUsuarioLogueado.id'); // $_SESSION['Client']['id'];
		$user_id   = $this->Auth->user('id'); //$_SESSION['Auth']['User']['id'];

		$this->set('user_id',$user_id);        
        $this->layout = 'default_front';

        if($_POST){
        	if(isset($_POST['acepto']) and $_POST['acepto']=='on'){

				$this->User->id = $user_id;
				$this->User->saveField('acepta_tos', 1);

				$this->ChequeaHabilitaciones();	

				// Si anduvo todo bien, redirecciono trafico

                // Defino el landing page.
                if(!$this->Session->read("Auth.redirect")){
                	$this->redirect('/dashboards');
                }else{
                	$this->redirect($this->Session->read("Auth.redirect"));
                }


        	} else {
        		$this->Session->setFlash(__('Debe Aceptar los Términos y Condiciones para poder utilizar el sistema', true), 'default', array('class' => 'error-message'));
        	}
        }

	}	

	
	function ChequeaHabilitaciones(){
	
		$client_id = $this->Session->read('ClientesUsuarioLogueado.id'); // $_SESSION['Client']['id'];
		$user_id   = $this->Auth->user('id'); //$_SESSION['Auth']['User']['id'];

		$User = $this->User->read(null,$user_id);

		if ($User['User']['acepta_tos']==0){
			$this->redirect(array('action'=>'acepta_tos'));
			die();
		}
	

		// ----------------------------------------------------------------------------------
		//                                                   Valido que el Usuario tenga un Rol 
		// ----------------------------------------------------------------------------------

		$roles_usuario = $this->requestAction('/rols/obtenerroles/'.$user_id.'/'.$client_id);

		if(empty($roles_usuario)){
			$this->Session->setFlash(__('No tiene ningún Rol asignado. Favor de <a href="/contacto" class="btn btn-inverse" style="text-decoration: none; color: #FFFFFF;">Contactarse aquí</a>', true), 'default', array('class' => 'error-message'));
			$this->redirect('/users/login');
		}

		// ----------------------------------------------------------------------------------
		//                                                   Tiene Plan Activo este Cliente ? 
		// ----------------------------------------------------------------------------------

		$this->loadModel('ClientsPlan');
		$Plan = $this->ClientsPlan->find('first', array(
						'conditions' => array(
										'ClientsPlan.client_id' => $client_id,
										'ClientsPlan.activo'    => 1,
						), 'recursive' => 1

						));

		if (empty($Plan)) {
			$this->Session->setFlash(__('No tiene plan activo.', true), 'default', array('class' => 'error-message'));
			$this->redirect('/clients/upgrade');
		}
		
		// ----------------------------------------------------------------------------------
		//                        La cantidad de Pacientes supera las permitidas por el Plan? 
		// ----------------------------------------------------------------------------------
		$cantidad_maxima_pacientes = $Plan['Plan']['maximo_pacientes'];
		$this->loadModel('ClientsPerson');
		$sql = "select count(clients_people.id) as cuantos 
			from clients_people 
			left join people on people.id = clients_people.person_id
			where client_id='$client_id' and people.stateperson_id='1'";

// 		$sql = "select count(id) as cuantos from clients_people where client_id='$client_id' ";		
		$x   = $this->ClientsPerson->query($sql);

//pr($x); die();

		$pacientes_actuales = $x[0][0]['cuantos'];
		if ($pacientes_actuales > $cantidad_maxima_pacientes) {
			
			// ----------------------------------------------------------------------------------
			//                                                           Tiene Referidos Activos? 
			// ----------------------------------------------------------------------------------
			$this->loadModel('Referer');
			$sql = "select count(id) as cuantos from referers where client_id='$client_id' and cliente_referido_id > 0";
			$x   = $this->Referer->query($sql);
			$referidos_vigentes = $x[0][0]['cuantos'] * 50;
			

			$total_maximo_pacientes = $cantidad_maxima_pacientes + $referidos_vigentes	;
			
			if ($pacientes_actuales > $total_maximo_pacientes) {
				$this->Session->setFlash(__('Superó la cantidad de pacientes habilitados en el Plan.', true), 'default', array('class' => 'error-message'));
				$this->redirect('/clients/upgrade');
			}
		}

		// ----------------------------------------------------------------------------------
		//                                 La cantidad de GB almacenados supera los del Plan? 
		//                                        Si $Plan['Plan']['maximo_gb']=0 : ilimitado
		// ----------------------------------------------------------------------------------
		if ( $Plan['Plan']['maximo_gb']>0 ){

			$this->loadModel('Adjunto');
			$sql = "select sum(size_kb) as cuantos from adjuntos where client_id='$client_id' and staterecord_id>1";
			$x   = $this->Adjunto->query($sql);
			$kb_usados = $x[0][0]['cuantos'];
			if ( $kb_usados > 0 ){
				$gb_usados = $kb_usados/1024/1024;
				if ($gb_usados > $Plan['Plan']['maximo_gb'] ){
					$this->Session->setFlash(__('Superó la cantidad de GB de almacenamiento habilitados en el Plan.', true), 'default', array('class' => 'error-message'));
					$this->redirect('/clients/upgrade');
				}
			}
		}

		
		// ----------------------------------------------------------------------------------
		//                                        La cantidad de Medicos supera los del Plan? 
		//                                   Si $Plan['Plan']['maximo_medicos']=0 : ilimitado
		// ----------------------------------------------------------------------------------
		//pr($Plan['Plan']); die();
		if ( $Plan['Plan']['maximo_medicos']>0 ){
			$rol_medico = 4; // id del rol de medico en rols


			$this->loadModel('RolsUser');
			$rols = $this->RolsUser->find('all', array(
										      'conditions' => array(
														           'RolsUser.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
														           'RolsUser.rol_id'    => $rol_medico
		   															)
			  											) 
			  							);
			//pr($rols); die();
			if ($rols){
				$this->loadModel('ClientsUser');
				foreach($rols as $clave=>$valor) {

					$user_id = $valor['RolsUser']['user_id'];

					$ClientUser = $this->ClientsUser->find('first', array(
																'conditions' => array(
																			'ClientsUser.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
																			'ClientsUser.user_id'   => $user_id,
																			), 
																'recursive' => -1
																)
														);
					if ( isset($ClientUser) and $ClientUser['ClientsUser']['staterecord_id'] > 1 ){

						unset($rols[$clave]);

					}

				}

			}

			$cantidad_de_medicos = count($rols);
			if ( $cantidad_de_medicos > $Plan['Plan']['maximo_medicos']){
				$this->Session->setFlash(__('Superó la cantidad de Médicos habilitados en el Plan.', true), 'default', array('class' => 'error-message'));
				$this->redirect('/clients/upgrade');
			}
		}

		// ----------------------------------------------------------------------------------
		//         La cantidad de administrativos/asistentes/secretarias supera los del Plan? 
		//                                     Si $Plan['Plan']['maximo_admin']=0 : ilimitado
		// ----------------------------------------------------------------------------------
		if ( $Plan['Plan']['maximo_admin']>0 ){

			$rol_medico = 4; // id del rol de medico en rols

			$this->loadModel('RolsUser');
			$rols = $this->RolsUser->find('all', array(
										      'conditions' 	=> array(
														           'RolsUser.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
														           'RolsUser.rol_id !='    => $rol_medico
		   															),
										      'group' 		=> array('RolsUser.user_id'), 
			  											) 
			  							);
//			pr($rols); 
			if ($rols){
				$this->loadModel('ClientsUser');
				foreach($rols as $clave=>$valor) {

					$user_id = $valor['RolsUser']['user_id'];

					$ClientUser = $this->ClientsUser->find('first', array(
																'conditions' => array(
																			'ClientsUser.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
																			'ClientsUser.user_id'   => $user_id,
																			), 
																'recursive' => -1
																)
														);
					if ( isset($ClientUser) and $ClientUser['ClientsUser']['staterecord_id'] > 1 ){
//						pr($rols[$clave]);
						unset($rols[$clave]);

					}

				}

			}
//			pr($rols); die();
			$cantidad_de_otros_roles = count($rols);
			if ( $cantidad_de_otros_roles > $Plan['Plan']['maximo_admin']){
				$this->Session->setFlash(__('Superó la cantidad de Administradores/Asistentes/Secretarias habilitados en el Plan.', true), 'default', array('class' => 'error-message'));
				$this->redirect('/clients/upgrade');
			}


		}

		
		// ----------------------------------------------------------------------------------
		//                                                  El plan, tiene dias de caducidad? 
		//                                    Si $Plan['Plan']['dias_vigencia']=0 : ilimitado
		// ----------------------------------------------------------------------------------
		if ( $Plan['Plan']['dias_vigencia'] > 0 ){
			$fecha_alta = $Plan['ClientsPlan']['fecha_alta'];
			list($ano,$mes,$dia)=split("-",$fecha_alta);
        	$fecha_caducidad = mktime(0,0,0, $mes,$dia,$ano) + ($Plan['Plan']['dias_vigencia'] * 24 * 60 * 60);
			if ( time() > $fecha_caducidad ){
				$this->Session->setFlash(__('El Plan actual está vencido.', true), 'default', array('class' => 'error-message'));
				$this->redirect('/clients/upgrade');
			}
		}

		
		//-----------------------------------------------------------------------------------
		//                                 El usuario logueado tiene perfil de administrador?
		//-----------------------------------------------------------------------------------
		$ListadoRolesUsuarioLogueado = $this->Session->read('ListadoRolesUsuarioLogueado');

		if ( isset($ListadoRolesUsuarioLogueado[1]) ){
			$es_administrador = true;			
		} else {
			$es_administrador = false;
		}
		
		// ----------------------------------------------------------------------------------
		//                                                                Estado de los pagos 
		// ----------------------------------------------------------------------------------
		$this->loadModel('Payment');
		$Payments = $this->Payment->find('first', array(
												'conditions' => array(
																'Payment.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
																'Payment.periodo_pago' => date("Y-m"),
																), 
												'recursive' => -1
												)
										);

		if ( !isset($Payments) or empty($Payments) ){

			if ($Plan['Plan']['precio']>0) {

				//$CP['id']           = 0;
				$CP['client_id']    = $this->Session->read('ClientesUsuarioLogueado.id');
				$CP['user_id']      = $user_id;
				$CP['plan_id']      = $Plan['Plan']['id'];
				$CP['periodo_pago'] = date("Y-m");
				$CP['money_id']     = $Plan['Plan']['money_id'];
				$CP['importe']      = $Plan['Plan']['precio'];
				$CP['accede_hasta'] = time()+(60*60*24*15);

				$this->Payment->create();
				$this->Payment->save($CP);
			}

		} elseif (is_null($Payments['Payment']['fecha_pago']) or empty($Payments['Payment']['fecha_pago']) ) {

			if ($Payments['Payment']['accede_hasta']<=time()) {
			
				$_SESSION['periodo_impago'] = $Payments['Payment']['id'];
				$this->redirect('/clients/impago');
				exit();
				
			} else {
		
 				if( $es_administrador == true ){
					$this->Session->setFlash(__("El plan vigente registra deuda. Podrá seguir utilizando el servicio hasta el ".date("d/m/Y",$Payments['Payment']['accede_hasta']), true), 'default', array('class' => 'error-message'));
					$this->redirect('/clients/pagos');
					exit();
				}

				//-----------------------------------------------------------------------
				//               Le envio mail al administrador recordando el vencimiento
				//-----------------------------------------------------------------------
				$this->loadModel('NotificacionesPago');
				$NotificacionesPago = $this->NotificacionesPago->find('first', array(
												'conditions' => array(
																'NotificacionesPago.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
																'NotificacionesPago.fecha' => date("Y-m-d"),
																), 
												'recursive' => -1
												)
										);
				if(!$NotificacionesPago){
					//----------------------------------------------------------------------------
					//		                           Obtengo los Administradores de este cliente
					//----------------------------------------------------------------------------
					$client_id = $this->Session->read('ClientesUsuarioLogueado.id');
/*					
					$this->ClientsUsers->recursive = 3;
					$administradores = $this->ClientsUsers->find('all', array(
												'conditions' => array(
													'ClientsUsers.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
													'ClientsUsers.staterecord_id' => 1,
																)
												)
										);
*/					

					
					$query = "select users.id, users.email, users.name, users.lastname
							from users 
								left join rols_users on users.id = rols_users.user_id
								left join clients_users on users.id = clients_users.user_id
							where rols_users.client_id = '$client_id' and clients_users.staterecord_id=1 
								and rol_id = '1' ";
					$administradores = $this->User->query($query);

					if(!$administradores){
						$this->Session->setFlash(__("Debe definir un usuario con perfil de Administrador!!<br>El plan vigente registra deuda. Podrá seguir utilizando el servicio hasta el ".date("d/m/Y",$Payments['Payment']['accede_hasta']), true), 'default', array('class' => 'error-message'));
						$this->redirect('/clients/pagos');
						exit();
					}

					//-----------------------------------------------------------------------------
					//                                 Registro el envio de mail para el dia de hoy
					//-----------------------------------------------------------------------------
					$NotificacionesPago['NotificacionesPago']['id']        = 0;
					$NotificacionesPago['NotificacionesPago']['client_id'] = $this->Session->read('ClientesUsuarioLogueado.id');
					$NotificacionesPago['NotificacionesPago']['fecha']     = date("Y-m-d");
					$this->NotificacionesPago->save($NotificacionesPago['NotificacionesPago']);

					//------------------------------------------------------------------------------
					//                                     Envío mail de aviso a los Administradores
					//------------------------------------------------------------------------------
					$array_admin = array();
					foreach($administradores as $ad){
						$array_admin[] = "{$ad['users']['lastname']} {$ad['users']['name']}<{$ad['users']['email']}>";
					}		
					

					$array_bcc[0] = 'SC<sebastian.ciancio@gmail.com>';
					$array_bcc[1] = 'FP<federicopedernera@gmail.com>';
					$array_bcc[2] = 'AL<alopez72@gmail.com>';

					$this->Email->to      = $array_admin; 
					$this->Email->bcc     = $array_bcc;
					$this->Email->subject = 'Epicrisis - Aviso de Vencimiento'; 
					$this->Email->from    = 'Epicrisis<feedback@epicrisisweb.com>'; 
					$this->Email->sendAs  = 'html'; 

					/* SMTP Options */   

					$this->Email->smtpOptions = array(        
						'port'=>'465',
						'timeout'=>'30',
						'host' => 'ssl://smtp.gmail.com',
						'username'=>'feedback@epicrisisweb.com',
						'password'=>'fe9s5gk3mc8',
					);

					// Si se cambia este metodo de delivery NO FUNCIONA mandar varios mails a la vez
					$this->Email->delivery = 'smtp';

					$data = '
					<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
					<HTML><HEAD>
					<META content="text/html; charset=utf-8" http-equiv=Content-Type>
					  <STYLE type=text/css>
					<!--
					body { line-height: 1.5em;background:#E4DFD1;font-family: Arial,Helvetica,sans-serif;color:#333333;font-size:14px;width:100% !important; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%; margin:0; padding:0; }
					a:hover { color:#3C8DC5; }
					a { color: #1c85d5; text-decoration: underline }
					.greytext { font-family:verdana,arial,helvetica,sans-serif;font-size:10px;color:#666666;margin-top:20px auto;width:580px;padding:0 20px;line-height:16px; }
					.greytext a { color:#666666; }
					p {margin: 1em 0;line-height:1.5em; }
					img {outline:none; text-decoration:none; -ms-interpolation-mode: bicubic;}
					a img {border:none;}
					.image_fix {display:block;}
					#outlook a {padding:0;} /* Force Outlook to provide a "view in browser" menu link. */
					#backgroundTable {margin:0; padding:0; width:100% !important; line-height: 100% !important;background-color:#E4DFD1; }
					table td {border-collapse: collapse;}
					-->
					</STYLE>
					</HEAD>
					<BODY>
					<br/>
					<TABLE border=0 cellSpacing=0 cellPadding=0 width=620 align="center">
					  <TBODY> 
					  <TR> 
					    <TD bgColor=#ffffff align=left> 
					      <div style="BORDER-BOTTOM: #000 1px solid;   PADDING-RIGHT: 40px; BACKGROUND: #ffffff; background-color: #3C8DC5;"> 
					        <a href="http://www.epicrisisweb.com" target="_blank"><img border="0" alt="Epicrisis" src="http://www.epicrisisweb.com/images/epicrisis_st_powerpoint2.png" width="240" height="69" nosend="1"></a> 
					      </div>
					      <DIV 
					      style="BORDER-BOTTOM: #3C8DC5 4px solid;  PADDING-BOTTOM: 20px; PADDING-LEFT: 40px; PADDING-RIGHT: 40px; BACKGROUND: #ffffff; PADDING-TOP: 20px"> 
							<p>
							Queremos notificarle que el plan vigente registra deuda y podrá seguir utilizando el servicio hasta el <strong>'.date("d/m/Y",$Payments['Payment']['accede_hasta']).'</strong> sin ningún inconveniente. 
							</p>
							<p>
								Para efectuar el pago, le recomendamos que acceda a <a href="http://www.epicrisisweb.com/clients/pagos">http://www.epicrisisweb.com/clients/pagos</a> y siga las instrucciones ofrecidas.
							</p>
							<p>
								Ante cualquier duda o consulta, estamos a entera disposición para ayudar.
							</p>							
						  <P>Saludos,<br>
					        </P>
					        <table width="100%" border="0" cellpadding="0" cellspacing="0">
					          <tr> 
					            <td width="18%" align="left" valign="middle"><a href="http://www.epicrisisweb.com?s=recovery"><img src="http://www.epicrisisweb.com/images/navidad/epicrisis_icon.png" width="81" height="81" border="0" /></a></td>
					            <td width="56%" style="color:#666; line-height:
					          16px"> 
					              <p style="color: #0E2CA9; font-weight: bold">Equipo de Epicrisis<br>
					                <a href="http://www.epicrisisweb.com?s=recovery" style="color:#666; font-weight: bold">www.epicrisisweb.com</a></p>
					            </td>
					            <td width="26%">Seguinos en:<br>
					              <a href="http://www.facebook.com/epicrisis"><img src="http://www.epicrisisweb.com/images/navidad/ico-facebook.png" width="40" height="39" border="0" /></a><a href="https://twitter.com/epicrisisweb"><img src="http://www.epicrisisweb.com/images/navidad/ico-twitter.png" width="40" height="39" border="0" /></a><a href="http://www.linkedin.com/company/2426422?trk=tyah"><img src="http://www.epicrisisweb.com/images/navidad/linkedin.jpg" width="40" height="40" border="0" /></a> 
					            </td>
					          </tr>
					        </table>
					      </DIV>
					    </TD>
					  </TR>
					  </TBODY>
					</TABLE>
					<TABLE border=0 cellSpacing=0 cellPadding=0 width=620 align="center">
					  <TBODY> 
					  <TR> 
					    <TD bgColor=#e4dfd1 align=left> 
					      <P class=greytext align="center">Epicrisisweb.com - <a href="http://www.epicrisisweb.com/contacto">Contacto</a> 
					        - <a href="http://www.epicrisisweb.com/nosotros">La Empresa</a> - <a href="http://www.epicrisisweb.com/politica">Aviso 
					        Legal</a> - <a href="http://www.epicrisisweb.com/politica">Pol&iacute;tica 
					        de privacidad</a> <br>
					      </P>
					    </TD>
					  </TR>
					  </TBODY>
					</TABLE>
					</BODY></HTML>
					';


					if (!$this->Email->send($data)) {
						$this->Session->setFlash(__("El plan vigente registra deuda. Podrá seguir utilizando el servicio hasta el ".date("d/m/Y",$Payments['Payment']['accede_hasta']), true), 'default', array('class' => 'error-message'));
						$this->redirect('/clients/pagos');
						exit();
					}
					
				}

				
			}
			
		}



	
	} // end function ChequeaHabilitaciones
	
	
	 
	function loginmobile() {
		$this->ClientsUsers->recursive = 0;
		$this->User->recursive = -1;
		$this->Client->recursive = -1;

		$this->autoRender=false;

		// Inicializo el Resultado
		$resultadoJson = array('authenticated'=>false,'message'=>__('Acceso fallido.',true));;



 


        // If a user has submitted form data:
        if (!empty($this->params['url']['usermobile']) AND !empty($this->params['url']['passwordmobile']) ){

            // First, let's see if there are any users in the database
            // with the username supplied by the user using the form:

            $someone = $this->User->findByUsername($this->params['url']['usermobile']);

            // At this point, $someone is full of user data, or its empty.
            // Let's compare the form-submitted password with the one in
            // the database.

            if(!empty($someone['User']['password']) && $someone['User']['password'] == Security::hash($this->params['url']['passwordmobile'], null, true)){


				// Fuerzo el Login
				$this->data['User']['username'] = $this->params['url']['usermobile'];
				$this->data['User']['password'] = Security::hash($this->params['url']['passwordmobile'], null, true);

				if(!$this->Auth->login($this->data)){
					// Error porque no pudo autenticar
					$resultadoJson = array('authenticated'=>false,'message'=>__('Error de autenticación.',true));
					echo "hcejson({".$resultadoJson."})";
					exit;
				}

				// Guardo la ultima vez que se logueo
				$this->User->id = $someone['User']['id'];
				$this->User->saveField('last_login', date('Y-m-d H:i:s') );

				// Averiguo a que Cliente pertenece
				$id_cliente_logueado = $this->User->query(
					"SELECT 
						ClientsUsers.client_id
					FROM 
						clients AS Client
						INNER JOIN clients_users AS ClientsUsers ON ClientsUsers.client_id = Client.id
					WHERE
						ClientsUsers.user_id = '".$this->User->id."' AND Client.stateclient_id = '1'
					;"
				);

				switch(count($id_cliente_logueado)){
					case 1:
						// Obtengo TODOS los datos del Cliente y lo guardo en la Session
						$datos_cliente  = $this->Client->find('first',
							array(
								'conditions' => array('Client.id' => $id_cliente_logueado[0]['ClientsUsers']['client_id'] )
							)
						);


						// Obtengo el SPONSOR si lo tiene
						$datos_sponsor = $this->Client->query(
							"SELECT 
								Sponsor.name, Sponsor.logo, Sponsor.id
							FROM 
								clients AS Client
								INNER JOIN clients_sponsors AS ClientsSponsors ON ClientsSponsors.client_id = Client.id
								INNER JOIN sponsors AS Sponsor ON ClientsSponsors.sponsor_id = Sponsor.id
							WHERE
								ClientsSponsors.client_id = '".$id_cliente_logueado[0]['ClientsUsers']['client_id']."' 
							LIMIT 1
							;"
						);

						if(!empty($datos_sponsor)){
							// Defino el Sponsor Actual
							$this->setSponsorActual($datos_sponsor['0']['Sponsor']);
						}

						// Obtengo el timeZone del cliente
						$Cliente = $this->Client->read(null,$id_cliente_logueado[0]['ClientsUsers']['client_id']);
						if (empty($Cliente['Client']['timezone'])){
							$Cliente['Client']['timezone'] = "America/Argentina/Buenos_Aires";
						}
						$this->Session->write('Client', $Cliente['Client']);


						// Guardo el Listado de Roles del Usuario y el Rol Actual (primero)
						$roles_usuario = $this->requestAction('/rols/obtenerroles/'.$this->Auth->user('id').'/'.$id_cliente_logueado[0]['ClientsUsers']['client_id']);
						$this->Session->write('ListadoRolesUsuarioLogueado', $roles_usuario);
						$this->Session->write('VistaActual', current($roles_usuario));

						//---------------------------------------------------------------------------
						//                                Armo la matriz de accesos para este cliente
						//---------------------------------------------------------------------------
						$Tabla        = $this->_tabla();

						$client_id = $id_cliente_logueado[0]['ClientsUsers']['client_id'];
						$Accesos = $this->ClientsAcceso->find('all', array(
										'conditions' => array( 'ClientsAcceso.client_id' => $client_id	)
										));
						foreach($Accesos as $aa){
							$rol_id        = $aa['ClientsAcceso']['rol_id'];
							$identificador = $aa['ClientsAcceso']['identificador'];
							$accede        = $aa['ClientsAcceso']['accede'];
							$Tabla[$rol_id][$identificador] = $accede;
						}
						$this->Session->write('MatrizAccesos', $Tabla);


						// Defino el Cliente Actual
						$this->setClienteActual($datos_cliente['Client']);
						break;
					case 0:
						// Error porque no tiene cliente
						$resultadoJson = array('authenticated'=>false,'message'=>__('El Usuario no pertenece a ningún Cliente.',true));
						echo "hcejson({".$resultadoJson."})";
						exit;
				}

                // Devuelvo resultado de la operacion
				$resultadoJson = array('authenticated'=>true,'message'=>__('Acceso exitoso.',true));
            }
            // Else, they supplied incorrect data:
            else
            {
				// Error porque los datos ingresados fueron incorrectos
				$resultadoJson = array('authenticated'=>false,'message'=>__('Datos incorrectos.',true));
            }
        }

		// Devuelvo Result
		echo "hcejson(".json_encode($resultadoJson).")";

	}


	function recovery() {
        $this->layout = 'default_front';

		if (!empty($this->data)) {

			// Averiguo si el usuario existe
            $datos_usuario = $this->User->findByUsername($this->data['User']['username']);

			// Si el Usuario existe
			if(!empty($datos_usuario)){

				// Si el email existe, mando el email con las intrucciones
				if(!empty($datos_usuario['User']['email'])){

					$array_bcc[0] = 'SC<sebastian.ciancio@gmail.com>';
					$array_bcc[1] = 'FP<federicopedernera@gmail.com>';
					$array_bcc[2] = 'AL<alopez72@gmail.com>';

					$this->Email->to = "<".$datos_usuario['User']['email'].">"; 
//					$this->Email->cc = $array_cc;
					$this->Email->bcc = $array_bcc;
					$this->Email->subject = 'Epicrisis - Recupero de contraseña'; 
					$this->Email->from = 'Epicrisis<feedback@epicrisisweb.com>'; 
					$this->Email->sendAs = 'html'; 

					/* SMTP Options */   

					$this->Email->smtpOptions = array(        
						'port'=>'465',
						'timeout'=>'30',
						'host' => 'ssl://smtp.gmail.com',
						'username'=>'feedback@epicrisisweb.com',
						'password'=>'fe9s5gk3mc8',
					);

					// Si se cambia este metodo de delivery NO FUNCIONA mandar varios mails a la vez
					$this->Email->delivery = 'smtp';

					$contrasena_temporal = substr(md5($datos_usuario['User']['username'].$datos_usuario['User']['id']),0,10);
				
					$data = '
					<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
					<HTML><HEAD>
					<META content="text/html; charset=utf-8" http-equiv=Content-Type>
					  <STYLE type=text/css>
					<!--
					body { line-height: 1.5em;background:#E4DFD1;font-family: Arial,Helvetica,sans-serif;color:#333333;font-size:14px;width:100% !important; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%; margin:0; padding:0; }
					a:hover { color:#3C8DC5; }
					a { color: #1c85d5; text-decoration: underline }
					.greytext { font-family:verdana,arial,helvetica,sans-serif;font-size:10px;color:#666666;margin-top:20px auto;width:580px;padding:0 20px;line-height:16px; }
					.greytext a { color:#666666; }
					p {margin: 1em 0;line-height:1.5em; }
					img {outline:none; text-decoration:none; -ms-interpolation-mode: bicubic;}
					a img {border:none;}
					.image_fix {display:block;}
					#outlook a {padding:0;} /* Force Outlook to provide a "view in browser" menu link. */
					#backgroundTable {margin:0; padding:0; width:100% !important; line-height: 100% !important;background-color:#E4DFD1; }
					table td {border-collapse: collapse;}
					-->
					</STYLE>
					</HEAD>
					<BODY>
					<br/>
					<TABLE border=0 cellSpacing=0 cellPadding=0 width=620 align="center">
					  <TBODY> 
					  <TR> 
					    <TD bgColor=#ffffff align=left> 
					      <div style="BORDER-BOTTOM: #000 1px solid;   PADDING-RIGHT: 40px; BACKGROUND: #ffffff; background-color: #3C8DC5;"> 
					        <a href="http://www.epicrisisweb.com?s=recovery" target="_blank"><img border="0" alt="Epicrisis" src="http://www.epicrisisweb.com/images/epicrisis_st_powerpoint2.png" width="240" height="69" nosend="1"></a> 
					      </div>
					      <DIV 
					      style="BORDER-BOTTOM: #3C8DC5 4px solid;  PADDING-BOTTOM: 20px; PADDING-LEFT: 40px; PADDING-RIGHT: 40px; BACKGROUND: #ffffff; PADDING-TOP: 20px"> 
					        <P><a href="http://www.epicrisisweb.com?s=recovery"><img style="FLOAT: right; MARGIN-LEFT: 1px; margin-top: -112px;" src="http://www.epicrisisweb.com/images/ribbon-gratis.png" nosend="1" width="50" height="107" border="0"></a>Hola '.$datos_usuario['User']['name'].'</P>
					        <p>Hemos recibido tu <b>solicitud</b> de <b>olvido de contrase&ntilde;a</b>.</p>
					        <p>Por cuestiones de <b>seguridad</b> y <b>privacidad</b> no tenemos forma 
					          de saber cual es tu contrase&ntilde;a pero si podemos cambiarla por 
					          una transitoria para que puedas acceder al Sistema y luego la cambies 
					          por la que desees.</p>
					        <p></p>
					        <div 
					      style="BORDER-BOTTOM: #efefef 1px solid; BORDER-LEFT: #efefef 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #f1f1f1; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #efefef 1px solid; BORDER-RIGHT: #efefef 1px solid; PADDING-TOP: 10px; -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px 5px 5px 5px"> 
					          <p>La nueva contrase&ntilde;a asignada es: <b>'.$contrasena_temporal.'</b></p>
					        </div>
					        <P><br>
					          Para acceder con los nuevos datos, podes hacerlo desde aca: <a href="http://www.epicrisisweb.com/users/login">http://www.epicrisisweb.com/users/login</a><br>
					        </P>
					        <P>Saludos,<br>
					        </P>
					        <table width="100%" border="0" cellpadding="0" cellspacing="0">
					          <tr> 
					            <td width="18%" align="left" valign="middle"><a href="http://www.epicrisisweb.com?s=recovery"><img src="http://www.epicrisisweb.com/images/navidad/epicrisis_icon.png" width="81" height="81" border="0" /></a></td>
					            <td width="56%" style="color:#666; line-height:
					          16px"> 
					              <p style="color: #0E2CA9; font-weight: bold">Equipo de Epicrisis<br>
					                <a href="http://www.epicrisisweb.com?s=recovery" style="color:#666; font-weight: bold">www.epicrisisweb.com</a></p>
					            </td>
					            <td width="26%">Seguinos en:<br>
					              <a href="http://www.facebook.com/epicrisis"><img src="http://www.epicrisisweb.com/images/navidad/ico-facebook.png" width="40" height="39" border="0" /></a><a href="https://twitter.com/epicrisisweb"><img src="http://www.epicrisisweb.com/images/navidad/ico-twitter.png" width="40" height="39" border="0" /></a><a href="http://www.linkedin.com/company/2426422?trk=tyah"><img src="http://www.epicrisisweb.com/images/navidad/linkedin.jpg" width="40" height="40" border="0" /></a> 
					            </td>
					          </tr>
					        </table>
					      </DIV>
					    </TD>
					  </TR>
					  </TBODY>
					</TABLE>
					<TABLE border=0 cellSpacing=0 cellPadding=0 width=620 align="center">
					  <TBODY> 
					  <TR> 
					    <TD bgColor=#e4dfd1 align=left> 
					      <P class=greytext align="center">Epicrisisweb.com - <a href="http://www.epicrisisweb.com/contacto">Contacto</a> 
					        - <a href="http://www.epicrisisweb.com/nosotros">La Empresa</a> - <a href="http://www.epicrisisweb.com/politica">Aviso 
					        Legal</a> - <a href="http://www.epicrisisweb.com/politica">Pol&iacute;tica 
					        de privacidad</a> <br>
					      </P>
					    </TD>
					  </TR>
					  </TBODY>
					</TABLE>
					</BODY></HTML>
					';

					// Si el usuario no es DEMO, actualizo la Contraseña Temporal
					if($this->data['User']['username'] <> "demo"){
						$this->User->id = $datos_usuario['User']['id'];
						$this->User->saveField('password', Security::hash($contrasena_temporal, null, true));
					}


					if ($this->Email->send($data)) {
						$this->Session->setFlash(__('Se ha enviado por correo las instrucciones...', true));

					} else {
						$this->Session->setFlash(__('Las instrucciones no se puedieron enviar por correo. Intente más tarde.', true), 'default', array('class' => 'error-message'));
					}

					$this->redirect('/users/login');
					exit;


				}else{ // Si no existe el email

					$this->Session->setFlash(__('El usuario ingresado no tiene asociada ninguna cuenta de email. Por favor, contáctese con nosotros.', true));
					$this->redirect('/contacto');
					exit;
				}

			}else{ // Si no existe el Usuario

				$this->Session->setFlash(__('Los datos ingresados no corresponden a un usuario del Sistema...', true), 'default', array('class' => 'error-message'));
				$this->redirect('/users/recovery');
				exit;
			}
		}
	}

	function logout() {
        // Redirect users to this action if they click on a Logout button.
        // All we need to do here is trash the session information:

        $this->Session->delete('User');
        $this->Session->delete('ClientesUsuarioLogueado');
        $this->Session->delete('UltimoUpdateUsuario_'.$this->Session->read('Auth.User.id'));
        $this->Session->delete('ProfesionalSeleccionado');
        $this->Session->delete('AgendaSeleccionada');        
        $this->Session->destroy();
		$this->redirect("/");
	}

	 
	function logoutmobile() {
        $this->Session->delete('User');
        $this->Session->delete('ClientesUsuarioLogueado');
        $this->Session->delete('UltimoUpdateUsuario_'.$this->Session->read('Auth.User.id'));
        $this->Session->delete('ProfesionalSeleccionado');
        $this->Session->delete('AgendaSeleccionada');             
        $this->Session->destroy();

		$this->autoRender=false;

		// Inicializo el Resultado
		$resultadoJson = array('logout'=>true,'message'=>__('Logout satisfactorio.',true));;

		// Devuelvo Result
		echo "hcejson(".json_encode($resultadoJson).")";
		exit;
	}



	// Funcion TRANSITORIA para crear los PERMISOS
/*
	function initDB() {
		$group =& $this->User->Group;
		//Allow admins to everything
		$group->id = 1;     
		$this->Acl->allow($group, 'controllers');
	 
		//allow managers to posts and widgets
		$group->id = 1;
		$this->Acl->deny($group, 'controllers');
		$this->Acl->allow($group, 'controllers/Products');
		$this->Acl->allow($group, 'controllers/Groups');
	 
		//we add an exit to avoid an ugly "missing views" error message
		echo "all done";
		exit;
	}
*/

	function obtenerListadoDoctores($id_cliente = null) {


//		if(!$arreglo_Doctores = Cache::read('profesionales_'.$this->Session->read('ClientesUsuarioLogueado.id'))){

			$Doctors = $this->User->query(
				"SELECT 
					User.id, User.lastname, User.name
				FROM 
					users AS User 
					INNER JOIN clients_users AS ClientsUsers ON ClientsUsers.user_id = User.id
					INNER JOIN rols_users AS RolsUsers ON (RolsUsers.user_id = User.id AND ClientsUsers.client_id = RolsUsers.client_id)
				WHERE
					RolsUsers.rol_id = '4' AND RolsUsers.client_id = '$id_cliente' AND ClientsUsers.staterecord_id = '1'
				ORDER BY 
					User.lastname, User.name
				;"
			);

			$arreglo_Doctores = array();

			foreach($Doctors as $Doctor){
				$arreglo_Doctores[$Doctor['User']['id']] = $Doctor['User']['lastname'].", ".$Doctor['User']['name'];
			}

//            Cache::write('profesionales_'.$this->Session->read('ClientesUsuarioLogueado.id'), $arreglo_Doctores);
//		}

		return $arreglo_Doctores;
	}

	function islogged() {

		if($this->Auth->user('id')){ 
			$this->set('resultado', array('logged' => 'true', 'user_id' => $this->Auth->user('id') ));
		}else{
			$this->set('resultado', array('logged' => 'false', 'user_id' => '0' ));
		}
	}	
}
?>